from aip import AipNlp
from urllib.parse import urlencode
import requests
from jieba import analyse
from vis_sys.settings import B_APP_ID, B_API_KEY, B_SECRET_KEY


client = AipNlp(B_APP_ID, B_API_KEY, B_SECRET_KEY)


def get_token():
    """用post请求token"""
    url = "https://aip.baidubce.com/oauth/2.0/token"
    data = {
        "grant_type": "client_credentials",
        "client_id": B_API_KEY,
        "client_secret": B_SECRET_KEY
    }
    res = requests.post(url, data=data)
    res = res.json()
    return res.get("access_token")

def find_keyword(title, content, top_n=10):

    # 百度API, 文章标签分类
    tags = client.keyword(title, content)
    # analyse.set_stop_words("stop_words.txt")
    # 基于TF-IDF算法进行关键词抽取
    # jieba 关键词统计
    # 引入TF-IDF关键词抽取接口
    tfidf = analyse.extract_tags
    keywords = tfidf(content,allowPOS=["ns", "n", "vn", "v", "nr"], topK=top_n)
    return {'tags': [ i['tag'] for i in tags['items']], 'keywords': keywords}
    # 引入TextRank关键词抽取接口
    #textrank = analyse.textrank
    # 基于TextRank算法进行关键词抽取
    #keywords = textrank(content, allowPOS=["ns", "n", "vn", "v", "nr"], topK=5)
    #print(keywords)

def emotion(text):
    "情感分析"
    res = client.sentimentClassify(text)
    print(res)


def comment_tag(text, type_name):
    type_dict = {'酒店': '1', 'KTV': '2', '丽人': '3', '美食餐饮': '4', '旅游': '5', '健康': '6', '教育': '7', '商业': '8', '房产': '9', '汽车': '10', '生活': '11', '购物': '12', '3C': '13'}

    type_id =  type_dict.get(type_name)
    if type_id:
        res = client.commentTag(text, options={'type':type_id})
    else:
        res = client.commentTag(text)

    sentiments = {
        '0': [],
        '1': [],
        '2': []
    }
    if res.get('items'):
        for item in res['items']:
            # 统计评价，评价标注
            sentiments[str(item['sentiment'])].append(item['prop'] + item['adj'])

        if len(res['items']) > 0:
            score = float((len(sentiments['2']) + len(sentiments['1']) * 0.5 ) / len(res['items']))
        else:
            score = 0
        return {'sentiments': sentiments, 'score': score}

    return print('error', res)


if __name__ == '__main__':
    #get_token()
    # res = find_keyword(
    #     title='（服务·生活）安徽推行道路交通事故医疗费先行垫付措施',
    #     content="""
    # 新华社合肥5月8日电（记者陈诺）记者日前从安徽省公安厅了解到，这个省自今年5月10日起推行道路交通事故医疗费先行垫付措施。 　　据介绍，先行垫付需满足道路交通事故在安徽省内发生，由合作保险机构承保交强险和机动车辆第三者责任险，并且产生了医疗费用。根据事故初查情况，交警部门认为被保险车辆驾驶人应负有责任的，经当事人提出申请，会同合作保险机构，启动医疗费先行垫付工作机制。 　　先行垫付主要分为轻微伤现场快赔和危重伤住院垫付。其中，造成轻微伤的事故可现场调解，协商赔偿金额，签订赔偿协议，由保险公司在规定期限内将赔款转账赔付给伤者方或相关医疗机构。危重伤住院垫付则包括交强险抢救费垫付和商业险医疗费垫付。符合交强险抢救费垫付条件的，保险机构在1万元额度内据实垫付医疗费；住院医疗费超1万元，符合商业险医疗费垫付条件的，保险机构根据公安机关交通管理部门提供的事故初查情况或事故责任认定情况，按照不同额度先行垫付。 　　无论是哪种垫付，事故当事人都需向公安机关交通管理部门提出先行垫付申请，提供行驶证、驾驶证、身份证、银行卡、出院小结、医疗费用发票、用药明细单等信息凭证。 　　对已由公安机关交通管理部门出具《道路交通事故医疗费先行垫付建议书》的事故，出现赔款已先行支付，但后续责任认定中的事实认定中具有无责、免责情形的，由保险机构按照《道路交通事故医疗费先行垫付协议书》中约定的双方申请人承诺事宜，向当事人进行追偿。
    # """)
    # print(res)
    #emotion("韩方假设朝鲜有“异常征兆”和“挑衅”行动，更严重的是把朝鲜定性为“敌人”")

    comments = [
        "床的造型很简约，是纯实木床，我很喜欢，很日式风格，我很庆幸自己选择了林式木业，性价比很好!",
        "给父母买的床，他们很喜欢。 床的颜色没有色差，刚好搭家里的装修风格。 送货安装的师傅的很nice，认真负责。 被林氏木业的家具圈粉了～ 下一步就是买床垫了"
    ]
    for i in comments:
        res = comment_tag(i,"12")
        print(res)